package com.内部类.匿名内部类;

public class InnerclassExercise02 {
    public static void main(String[] args) {
        CellPhone cell = new CellPhone();
        cell.alarmClock(new Bell(){  // 创建匿名内部类对象，传进去
            @Override
            public void ring() {
                System.out.println("懒猪起床了");
            }
        });

        cell.alarmClock(new Bell(){  //创建匿名内部类对象，传进去
            @Override
            public void ring() {
                System.out.println("小伙伴上课了");
            }
        });
        /**
         * 相当于 Bell bell = new Bell(){  //编译类型是Bell，运行类型是匿名内部类InnerclassExercise02$1(系统分配的)
         *     @Override
         *             public void ring() {
         *                 System.out.println("小伙伴上课了");
         *             }
         * };
         * cell.alarmClock（bell）；//把实现类bell传给alarmClock方法
         */
    }
}
interface Bell{//接口：铃声
    void ring();
}
class CellPhone{
    public void alarmClock(Bell bell){//只要是Bell接口的实现类，都可以传进来
        bell.ring();  //动态绑定，根据实参的运行类型，调用bell接口的方法；
    }
}